package day1016;

import java.util.HashSet;
import java.util.Iterator;
import java.util.Scanner;
import java.util.Set;

public class EmpDaoImpl {
    Set<Emp>  emps=new HashSet();

    public boolean updateEmp(Emp newEmp){
        boolean flag=false;//1.用flag变量标识修改成功或失败(返回false)
        Emp oldEmp=selectById(newEmp.empNo);//2.从集合中查询要修改的员工
        if(oldEmp!=null){//3.如果集合中存在要修改的员工(再修改此员工)
            emps.remove(oldEmp);//4.从集合中删除旧的员工对象
            emps.add(newEmp);//再添加新的员工对象(达到替换的目的)
            flag=true;//5.给flag变量赋值一个true(在方法最后返回)表示修改成功
        }
        return flag;
    }

    public static void main(String[] args) {//10.172.201.52
        EmpDaoImpl dao=new EmpDaoImpl();//1.创建当前类对象
        Scanner sc=new Scanner(System.in);//输入员工编号2.1
        System.out.println("请输入员工编号:");//输入员工编号2.2:提示输入编号
        String eno=sc.next();//输入员工编号2.3:用sc对象nex()输入编号
        boolean delRs=dao.deleteEmp(eno);//3.用当前类对象dao调用deleteEmp()删除员工
        System.out.println("删除此员工的操作结果为：" + delRs);//4.查看是否删除成功

        System.out.println("请输入员工姓名:");
        String name=sc.next();
        Emp e=new Emp(eno,name);
        System.out.println(dao.updateEmp(e));
    }
    //根据员工编号sid从集合emps删除员工对象(返回boolean类型数据表示是否成功)
    public  boolean deleteEmp(String sid){
        boolean flag=false;//此flag变量用来标识是否删除成功
        Emp oldEmp=selectById(sid);//1.用本类中的selectById查询要修改的员工数据
        if(oldEmp!=null){//2.如果从集合中查询到此员工编号(if成立)数据(就删除)
            emps.remove(oldEmp);//3.就从集合中删除此员工对象
            flag=true;//4.给flag赋值为true表示删除成功(在方法最后返回flag)
        }
        return flag;//5.如果if满足则这里return true表示删除成功
    }               //如果if不满足这里return false表示删除失败


    public Emp  selectById(String sid){
        //用迭代器从集合中获取每个员工对象和参数sid比较
        Iterator<Emp> ite=emps.iterator();//获取迭代器对象
        while(ite.hasNext()){//判断迭代器ite的下一位是否有元素
            Emp e=ite.next();//用迭代器 的next获取一个集合元素
            //如果编号相同就查找到此员工了
            if(sid.endsWith(e.empNo)){//比较参数编号sid和集合中的员工编号是否相同
                System.out.println("找到此员工对象了"+e.empName);
                return  e;
            }
        }
        return null; //如果集合中没有员工，则返回null表示查询不到员工
    }


    public EmpDaoImpl() {//在无参构造方法中：给集合添加两个员工对象
        Emp e1=new Emp("big2-1001","徐德治");
        Emp e2=new Emp("big2-1002","朱慧慧");
        emps.add(e1);  emps.add(e2);
    }
}





